<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // function*  generator() {//function* 可以声明一个generator状态机对象， yield关键字用来定义一个个的状态
        //     yield console.log(1);
        //     yield console.log(2);
        //     yield console.log(3);
        //     yield console.log(4);
        //     yield console.log(5);

        // }
        // const gen = generator();//调用generator函数后返回一个iterator对象，每次调用iterator对象上的next方法，可以执行一个yield后的状态
        // console.log(gen)
        // gen.next()
        // gen.next()
        // gen.next()
        // gen.next()
        // gen.next()

        //用generator实现请求数据
        function* generator() {
            console.log('开始请求A')
            yield setTimeout(()=>{
                console.log('A成功')
                gen.next()
            },2000)
            console.log('开始请求B')
            yield setTimeout(()=>{
                console.log('B成功')
                gen.next()
            },2000)
            console.log('开始请求C')
            yield setTimeout(()=>{
                console.log('C成功')
                
            },2000)
        }
        const gen = generator()
        gen.next()

    // generator代码内部不会马上执行，需要调用next方法的时候才会执行
    //  在generator函数中，遇到yield就会停止，直到运行next
    </script>
</body>
</html>